﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Collections;



namespace Uurrooster_opdracht
{
    public partial class Uurrooster : Form
    {
        clsData data = new clsData();

        public Uurrooster()
        {
            InitializeComponent();            
        }

        private void Form1_Load(object sender, EventArgs e)
        {            
            refresh(data);
        }

        private void refresh(clsData datasrc)
        {
            loadDataGridView(0, 0);
            vulComboboxDocenten(datasrc);
            vulComboboxStudenten(datasrc);
            vulComboboxVakken(datasrc);
            vulComboboxLokalen(datasrc);
            vulComboboxLesmomenten(datasrc);
        }

        private void cmbDocent_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbDocent.SelectedIndex != -1)
            {
                int i = cmbDocent.SelectedItem.ToString().Length;
                string id = (cmbDocent.SelectedItem.ToString().Remove(0, i - 2).Remove(1));
                loadDataGridView(1, Convert.ToInt32(id));
            }
            else
            {
                loadDataGridView(0,0);
            }

        }

        private void cmbStudent_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbStudent.SelectedIndex != -1)
            {
                int i = cmbStudent.SelectedItem.ToString().Length;
                string id = (cmbStudent.SelectedItem.ToString().Remove(0, i - 2).Remove(1));
                loadDataGridView(2, Convert.ToInt32(id));
            }
            else
            {
                loadDataGridView(0, 0);
            }
        }

        private void cmbVak_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbVak.SelectedIndex != -1)
            {
            int i = cmbVak.SelectedItem.ToString().Length;
            string id = (cmbVak.SelectedItem.ToString().Remove(0, i - 2).Remove(1));
            loadDataGridView(3, Convert.ToInt32(id));
            }
            else
            {
                loadDataGridView(0, 0);
            }
        }

        private void cmbLokaal_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbLokaal.SelectedIndex != -1)
            {
            int i = cmbLokaal.SelectedItem.ToString().Length;
            string id = (cmbLokaal.SelectedItem.ToString().Remove(0, i - 2).Remove(1));
            loadDataGridView(4, Convert.ToInt32(id)); 
             }
            else
            {
                loadDataGridView(0, 0);
            }
        }

        private void cmbLesmoment_SelectedIndexChanged(object sender, EventArgs e)
        {
             if (cmbLokaal.SelectedIndex != -1)
            {
            int i = cmbLesmoment.SelectedItem.ToString().Length;
            string id = (cmbLesmoment.SelectedItem.ToString().Remove(0, i - 2).Remove(1));
            loadDataGridView(5, Convert.ToInt32(id));
            }
             else
             {
                 loadDataGridView(0, 0);
             }
        }

        /// <summary>
        /// methode die het datagrid vul met data
        /// </summary>
        /// <param name="cmbx">type van de filter</param>
        /// <param name="parameter_cbx">ID</param>
        private void loadDataGridView(int cmbx, int parameter_cbx)
        {
                 
                switch (cmbx)
                {
                     //geen filter
                    case 0:
                    #region geen_filter
                        var query = from uurrooster in data.dbc.tblUurroosters
                                join docent in data.dbc.tblDocents on uurrooster.docentID equals docent.docentID
                                join student in data.dbc.tblStudents on uurrooster.studentID equals student.studentID
                                join lesmoment in data.dbc.tblLesmoments on uurrooster.lesmomentID equals lesmoment.lesmomentID
                                join vak in data.dbc.tblVaks on uurrooster.vakID equals vak.vakID
                                join lokaal in data.dbc.tblLokaals on uurrooster.lokaalID equals lokaal.lokaalID
                                select new
                                {
                                    docentNaam = docent.docentNaam.Trim() + " "+ docent.docentVoornaam.Trim(),
                                    studentNaam = student.studentNaam.Trim() + " "+ student.studentVoornaam.Trim(),
                                    Lokaal = lokaal.lokaalNaam.Trim() + " " + lokaal.lokaalLocatie.Trim(),
                                    lesmoment = lesmoment.lesmomentWeekdag + " van " + lesmoment.lesmomentStartUur + " tot " + lesmoment.lesmomentEindUur,
                                    vak = vak.vakNaam
                                };
                        //hier doe ik een automatische aanpassing van de kolombreedte
                        dgvUurrooster.DataSource = query;
                        int c = dgvUurrooster.ColumnCount;
                        for (int i = 0; i < c; i++)
                        {
                            dgvUurrooster.AutoResizeColumn(i);
                        }
                        #endregion
                    break;
                    //filter 1 = docent
                    case 1:
                    #region filter_docent
                        query = from uurrooster in data.dbc.tblUurroosters
                             join docent in data.dbc.tblDocents on uurrooster.docentID equals docent.docentID
                             join student in data.dbc.tblStudents on uurrooster.studentID equals student.studentID
                             join lesmoment in data.dbc.tblLesmoments on uurrooster.lesmomentID equals lesmoment.lesmomentID
                             join vak in data.dbc.tblVaks on uurrooster.vakID equals vak.vakID
                             join lokaal in data.dbc.tblLokaals on uurrooster.lokaalID equals lokaal.lokaalID
                             where uurrooster.docentID == parameter_cbx
                                select new
                                {
                                    docentNaam = docent.docentNaam.Trim() + " " + docent.docentVoornaam.Trim(),
                                    studentNaam = student.studentNaam.Trim() + " " + student.studentVoornaam.Trim(),
                                    Lokaal = lokaal.lokaalNaam.Trim() + " " + lokaal.lokaalLocatie.Trim(),
                                    lesmoment = lesmoment.lesmomentWeekdag + " van " + lesmoment.lesmomentStartUur + " tot " + lesmoment.lesmomentEindUur,
                                    vak = vak.vakNaam
                                };
                    //hier doe ik een automatische aanpassing van de kolombreedte
                    dgvUurrooster.DataSource = query;
                    c = dgvUurrooster.ColumnCount;
                    for (int i = 0; i < c; i++)
                    {
                        dgvUurrooster.AutoResizeColumn(i);
                    }
                    #endregion
                    break;
                    //filter 2 student
                    case 2:
                    #region filter_student
                    query = from uurrooster in data.dbc.tblUurroosters
                             join docent in data.dbc.tblDocents on uurrooster.docentID equals docent.docentID
                             join student in data.dbc.tblStudents on uurrooster.studentID equals student.studentID
                             join lesmoment in data.dbc.tblLesmoments on uurrooster.lesmomentID equals lesmoment.lesmomentID
                             join vak in data.dbc.tblVaks on uurrooster.vakID equals vak.vakID
                             join lokaal in data.dbc.tblLokaals on uurrooster.lokaalID equals lokaal.lokaalID
                             where student.studentID == parameter_cbx
                            select new
                            {
                                docentNaam = docent.docentNaam.Trim() + " " + docent.docentVoornaam.Trim(),
                                studentNaam = student.studentNaam.Trim() + " " + student.studentVoornaam.Trim(),
                                Lokaal = lokaal.lokaalNaam.Trim() + " " + lokaal.lokaalLocatie.Trim(),
                                lesmoment = lesmoment.lesmomentWeekdag + " van " + lesmoment.lesmomentStartUur + " tot " + lesmoment.lesmomentEindUur,
                                vak = vak.vakNaam
                            };
                    //hier doe ik een automatische aanpassing van de kolombreedte
                    dgvUurrooster.DataSource = query;
                    c = dgvUurrooster.ColumnCount;
                    for (int i = 0; i < c; i++)
                    {
                        dgvUurrooster.AutoResizeColumn(i);
                    }
                    #endregion
                    break;
                    //filter 3 vak
                    case 3:
                    #region filter_vak
                    query = from uurrooster in data.dbc.tblUurroosters
                            join docent in data.dbc.tblDocents on uurrooster.docentID equals docent.docentID
                            join student in data.dbc.tblStudents on uurrooster.studentID equals student.studentID
                            join lesmoment in data.dbc.tblLesmoments on uurrooster.lesmomentID equals lesmoment.lesmomentID
                            join vak in data.dbc.tblVaks on uurrooster.vakID equals vak.vakID
                            join lokaal in data.dbc.tblLokaals on uurrooster.lokaalID equals lokaal.lokaalID
                            where vak.vakID == parameter_cbx
                            select new
                            {
                                docentNaam = docent.docentNaam.Trim() + " " + docent.docentVoornaam.Trim(),
                                studentNaam = student.studentNaam.Trim() + " " + student.studentVoornaam.Trim(),
                                Lokaal = lokaal.lokaalNaam.Trim() + " " + lokaal.lokaalLocatie.Trim(),
                                lesmoment = lesmoment.lesmomentWeekdag + " van " + lesmoment.lesmomentStartUur + " tot " + lesmoment.lesmomentEindUur,
                                vak = vak.vakNaam
                            };
                    //hier doe ik een automatische aanpassing van de kolombreedte
                    dgvUurrooster.DataSource = query;
                    c = dgvUurrooster.ColumnCount;
                    for (int i = 0; i < c; i++)
                    {
                        dgvUurrooster.AutoResizeColumn(i);
                    }
#endregion
                    break;
                    //filter 4 lokalen
                    case 4:
                    #region filter_lokalen
                    query = from uurrooster in data.dbc.tblUurroosters
                            join docent in data.dbc.tblDocents on uurrooster.docentID equals docent.docentID
                            join student in data.dbc.tblStudents on uurrooster.studentID equals student.studentID
                            join lesmoment in data.dbc.tblLesmoments on uurrooster.lesmomentID equals lesmoment.lesmomentID
                            join vak in data.dbc.tblVaks on uurrooster.vakID equals vak.vakID
                            join lokaal in data.dbc.tblLokaals on uurrooster.lokaalID equals lokaal.lokaalID
                            where lokaal.lokaalID == parameter_cbx
                            select new
                            {
                                docentNaam = docent.docentNaam.Trim() + " " + docent.docentVoornaam.Trim(),
                                studentNaam = student.studentNaam.Trim() + " " + student.studentVoornaam.Trim(),
                                Lokaal = lokaal.lokaalNaam.Trim() + " " + lokaal.lokaalLocatie.Trim(),
                                lesmoment = lesmoment.lesmomentWeekdag + " van " + lesmoment.lesmomentStartUur + " tot " + lesmoment.lesmomentEindUur,
                                vak = vak.vakNaam
                            };
                    //hier doe ik een automatische aanpassing van de kolombreedte
                    dgvUurrooster.DataSource = query;
                    c = dgvUurrooster.ColumnCount;
                    for (int i = 0; i < c; i++)
                    {
                        dgvUurrooster.AutoResizeColumn(i);
                    }
                    #endregion
                    break;
                    //filter 4 lokalen
                    case 5:
                    #region filter_lesmomenten
                    query = from uurrooster in data.dbc.tblUurroosters
                            join docent in data.dbc.tblDocents on uurrooster.docentID equals docent.docentID
                            join student in data.dbc.tblStudents on uurrooster.studentID equals student.studentID
                            join lesmoment in data.dbc.tblLesmoments on uurrooster.lesmomentID equals lesmoment.lesmomentID
                            join vak in data.dbc.tblVaks on uurrooster.vakID equals vak.vakID
                            join lokaal in data.dbc.tblLokaals on uurrooster.lokaalID equals lokaal.lokaalID
                            where lesmoment.lesmomentID == parameter_cbx
                            select new
                            {
                                docentNaam = docent.docentNaam.Trim() + " " + docent.docentVoornaam.Trim(),
                                studentNaam = student.studentNaam.Trim() + " " + student.studentVoornaam.Trim(),
                                Lokaal = lokaal.lokaalNaam.Trim() + " " + lokaal.lokaalLocatie.Trim(),
                                lesmoment = lesmoment.lesmomentWeekdag + " van " + lesmoment.lesmomentStartUur + " tot " + lesmoment.lesmomentEindUur,
                                vak = vak.vakNaam
                            };
                    //hier doe ik een automatische aanpassing van de kolombreedte
                    dgvUurrooster.DataSource = query;
                    c = dgvUurrooster.ColumnCount;
                    for (int i = 0; i < c; i++)
                    {
                        dgvUurrooster.AutoResizeColumn(i);
                    }
                    #endregion
                    break;
                }        
            }

        private void vulComboboxDocenten(clsData src)
        {
            ArrayList d = new ArrayList();
            d = src.docenten();
            int aantal_docenten = d.Count;
            for (int i = 0; i < aantal_docenten; i++)
            {
                cmbDocent.Items.Add(d[i]);
            }
        }

        private void vulComboboxStudenten(clsData src)
        {
            ArrayList s = new ArrayList();
            s = src.studenten();
            int aantal_studenten = s.Count;
            for (int i = 0; i < aantal_studenten; i++)
            {
                cmbStudent.Items.Add(s[i]);
            }
        }

        private void vulComboboxVakken(clsData src)
        {
            ArrayList v = new ArrayList();
            v = src.vakken();
            int aantal_vakken = v.Count;
            for (int i = 0; i < aantal_vakken; i++)
            {
                cmbVak.Items.Add(v[i]);
            }
        }

        private void vulComboboxLokalen(clsData src)
        {
            ArrayList l = new ArrayList();
            l = src.Lokalen();
            int aantal_lokalen = l.Count;
            for (int i = 0; i < aantal_lokalen; i++)
            {
                cmbLokaal.Items.Add(l[i]);
            }
        }

        private void vulComboboxLesmomenten(clsData src)
        {
            ArrayList l = new ArrayList();
            l = src.Lesmomenten();
            int aantal_lesmomenten = l.Count;
            for (int i = 0; i < aantal_lesmomenten; i++)
            {
                cmbLesmoment.Items.Add(l[i]);
            }
        }

        private void btVerwijderFilters_Click(object sender, EventArgs e)
        {
            cmbDocent.SelectedIndex = -1;
            cmbStudent.SelectedIndex = -1;
            cmbVak.SelectedIndex = -1;
            cmbLokaal.SelectedIndex = -1;
            cmbLesmoment.SelectedIndex = -1;

        }
    }
}
